// 1. 引入自定义模块（circleModule-obj.js）
const circle = require('./circleModule-obj');

// 2. 测试1：计算半径为5的圆的周长和面积
console.log('=== 程序⑥：直接暴露对象式模块测试（半径=5） ===');
try {
  console.log(`圆的半径：5`);
  console.log(`圆的周长：${circle.circumference(5)}`); // 调用时传入半径
  console.log(`圆的面积：${circle.area(5)}`); // 调用时传入半径
} catch (error) {
  console.error(error.message);
}

// 3. 测试2：计算半径为10的圆的周长和面积
console.log('\n=== 程序⑥：直接暴露对象式模块测试（半径=10） ===');
try {
  console.log(`圆的半径：10`);
  console.log(`圆的周长：${circle.circumference(10)}`);
  console.log(`圆的面积：${circle.area(10)}`);
} catch (error) {
  console.error(error.message);
}

// 4. 对比程序⑤与程序⑥的差异
console.log('\n=== 程序⑤与程序⑥的核心差异 ===');
console.log('1. 模块暴露方式：');
console.log('   - 程序⑤：暴露函数（需调用函数生成实例，绑定半径）');
console.log('   - 程序⑥：暴露对象（直接调用对象方法，每次传入半径）');
console.log('2. 半径传递时机：');
console.log('   - 程序⑤：生成实例时传递一次，后续方法复用该半径');
console.log('   - 程序⑥：每次调用方法时单独传递半径，更灵活');
console.log('3. 适用场景：');
console.log('   - 程序⑤：需重复使用同一半径计算（如固定半径的圆）');
console.log('   - 程序⑥：需频繁切换不同半径计算（如多个不同圆）');